package sig.dao.relational;

import sig.dao.relational.impl.jpa.DaoFactoryJpa;



public abstract class DaoFactory {
	
	private static EnumFabricas enumFabricaConcreta = EnumFabricas.jpa;

	public abstract IDaoUser getDaoUser();
	public abstract IDaoAccount getDaoAccount();
	public abstract IDaoParameter getDaoParameter();
	public abstract IDaoConsultant getDaoConsultant();
	public abstract IDaoJournalEntry getDaoJournalEntry();
	public abstract IDaoExchangeRate getDaoExchangeRate();
	public abstract IDaoEmployee getDaoEmployee();
	public abstract IDaoProyect getDaoProyect();
	public abstract IDaoBusinessPartner getDaoBusinessPartner();
	public abstract IDaoCustomer getDaoCustomer();
	public abstract IDaoChartOfAccounts getChartOfAccounts();
	

	public static DaoFactory getFactory() {
		
		switch (enumFabricaConcreta) {
		case jpa:
			return new DaoFactoryJpa();
		default:
			return null;
		}
		
	}
	
	public static EnumFabricas getEnumFabricaConcreta() {
		return enumFabricaConcreta;
	}

	public static void setEnumFabricaConcreta(EnumFabricas fabricaConcreta) {
		DaoFactory.enumFabricaConcreta = fabricaConcreta;
	}
	
	public enum EnumFabricas {
		jpa
	}

}
